1. Field of the Invention
The present invention relates in general to a graphics processor system, and in particular, to an enhancement in the operating sequence used to display moving images on a video screen.
2. Description of the Related Art
Generally, a graphics processor is a special purpose microprocessor specifically designed to generate signals to drive a video monitor. Graphics processors include a hardware architecture and programming instructions designed specifically to perform specialized tasks associated with video graphics. As with microprocessors and other complex circuits with large consumer demands, graphics processors are produced as large scale integrated circuits. Very significant tooling costs are involved to convert a design to a large scale integrated circuit, but the result is the ability to produce parts with very significant advantages in terms of size, cost, and reliability compared to producing circuits with less complex, non-specialized components.
However, design enhancements, whether conceived by the graphics processor manufacturer or by a potential user, are not readily incorporated since the circuitry is imbedded in the silicon of the large scale integrated circuit and such a change requires major tooling cost to modify. As such, a user generally must live with the graphics processor architecture as provided by the manufacturer.
Typically, a GSP operates a VRAM module (video random access memory) which stores at least one image frame corresponding to one image displayed on the CRT monitor. Each image is formed from an array of colored pixels (e.g., 512 pixels per row and 384 pixels per column), the color for each pixel being defined by a corresponding data value stored in the related VRAM frame. The number of bits assigned to each pixel depends upon the number of possible colors that can be displayed. For example, an 8-bit data value per pixel will allow 256 different colors to be defined at each pixel.
To display an image stored in a frame in the VRAM, the image data is serially output to the CRT monitor. In this manner, consecutive data values are provided directly to the CRT monitor at high speed, without passing through the GSP. The CRT monitor illuminates each pixel to the correct color by using one or more electron beams to scan the screen in a raster pattern. While performing the raster scan, the electron beams scan horizontally across each row of pixels. At the end of a row, each beam moves vertically down one row and repeats the horizontal motion. Each beam repeats this process until it reaches the last pixel in the bottom row of the screen, at which time the beams return to the first pixel in the top row and prepare to repeat the raster scan. Each scan of the screen corresponds to one frame in the VRAM.
While the CRT monitor reads one image frame of data from the VRAM, the GSP updates the VRAM's image frame to correspond to the next image to be displayed. When the CRT monitor reads the next image frame, it will be somewhat different from the preceding image. Thus, to provide an animated graphics image, the GSP continuously modifies the image frame between each raster scan by the CRT.
To modify an image frame in the VRAM, the GSP performs a read-modify-write operation. More directly, the GSP reads the original image from the VRAM, modifies the image and writes the modified image back to the VRAM. The GSP may add images, such as icons, to the image frame in the VRAM. To support a variety of visual effects, such as animated movement of an icon across a screen, the GSP allows logical or arithmetic operations to be performed upon the original image. One form of animation is to display an image/icon on a constant graphics background and cause the icon to traverse the screen. The icon is incrementally moved small distances between each image frame to move from a starting point to a stopping point.
In the past, to achieve this animated motion, the GSP initially "created" a background image throughout the image frame of the VRAM. Next, the GSP added the icon by writing it into the image frame over a first segment of the background image, corresponding to the icon's starting position. To "move" the icon, the GSP consecutively re-wrote the icon image to new segments of the image frame, each new segment corresponding to the second, third, fourth, etc. positions of the icon on the screen. As the icon moved, the GSP created the impression that the icon "uncovered" part of the background image. To do so, the GSP rewrote the background image to the addresses in the VRAM that the icon "moved" away from or "uncovered."
However, conventional GSPs are unable to recreate quickly these background segments. Accordingly, after creating the entire background, but before writing the icon in a starting segment of the VRAM, the GSP copies a section of the background to a new memory area, referred to as scratch memory. The copied background section could be (1) a single segment over which the icon will be written in the next image frame or (2) an entire area over which the icon will traverse during all subsequent image frames. Next, the icon is written in the VRAM at its starting point. To advance the icon, the copied background section in the scratch memory is written over the icon in the VRAM and the icon is written at its next location in the VRAM.
However, if the GSP uses the former copying method, then after writing the copied background section to the VRAM, but before writing the icon to its new location, the GSP must copy the next background section over which the icon will be written. The copying operation must be repeated before writing the icon to each subsequent location to ensure that a copy of the "covered" and "uncovered" background sections is maintained in the scratch memory.
Further, if the GSP uses the latter copying method, it must use enough scratch memory to hold the entire background section that will be traversed. Also, the GSP must rewrite the entire copied background section to the VRAM, which may be quite large, between each incremental move of the icon. Under either conventional method, the use of scratch memory and the requirement for multiple read/write operations add to the processing time and slow the animation speed.
Delaying the processing time creates problems when displaying the image, such as "fluttering" and "tearing."
A tearing appearance results when the GSP is unable to update the VRAM completely between two consecutive raster scans. When this occurs, the CRT may read and display a portion of the VRAM which has been updated by the GSP to correspond to the next image frame, and a portion of the VRAM which has not been updated. As the CRT crosses between the updated and non-updated portions of the VRAM, it displays part of an icon in its new position and part of the icon in its old position. Accordingly, the icon appears to be "tearing" along the border between new and old icon positions, which is undesirable.
A fluttering appearance results when the CRT reads the VRAM after the copied background section has been rewritten to the VRAM, but before the icon has been written to its new location. When this occurs, the CRT will display an image frame entirely void of an icon, thereby creating the appearance that the icon is fluttering. The fluttering effect may be removed by synchronizing the GSP with the vertical sync signal whereby the CRT only refreshes the screen after the icon has been written to its new location. However, this synchronization further reduces the animation speed.